package fun.sanguo.utils.captcha;

import com.google.code.kaptcha.text.impl.DefaultTextCreator;

import java.util.Random;

/**
 * 验证码文本生成器
 *
 * @author ZYP
 * @date 2023-04-28
 */
public class CaptchaTextCreator extends DefaultTextCreator {

    @Override
    public String getText() {
        // 最终生成文本
        StringBuffer sb = new StringBuffer();
        // 计算结果
        int result = 0;
        // 生成两个20以内的随机数
        int x = new Random().nextInt(20);
        int y = new Random().nextInt(20);
        // 随机计算方式：0 1 2 3
        int calcMethod = new Random().nextInt(4);
        // 根据不同类型进行计算
        switch (calcMethod) {
            case 0:
                // 加法
                result = x + y;
                sb.append(x);
                sb.append("+");
                sb.append(y);
                break;
            case 1:
                // 减法，希望得到正整数的结果
                if (x > y) {
                    result = x - y;
                    sb.append(x);
                    sb.append("-");
                    sb.append(y);
                } else {
                    result = y - x;
                    sb.append(y);
                    sb.append("-");
                    sb.append(x);
                }
                break;
            case 2:
                // 乘法
                result = x * y;
                sb.append(x);
                sb.append("*");
                sb.append(y);
                break;
            case 3:
            default:
                // 除法，有余数则取余
                if (x % y == 0) {
                    result = x / y;
                    sb.append(x);
                    sb.append("/");
                    sb.append(y);
                } else {
                    result = x % y;
                    sb.append(x);
                    sb.append("%");
                    sb.append(y);
                }
                break;
        }
        sb.append("=?@" + result);
        return sb.toString();
    }
}
